#!/bin/bash
# 指定脚本使用 bash 解释器运行

set -e
# 开启脚本的 errexit 模式 执行命令出错时 脚本立即退出

# 如果没有 build 目录 创建该目录
if [ ! -d `pwd`/build ]; then 
# 判断当前目录下 build 目录是否不存在 -d 用于检测是否是目录 `pwd` 获取当前工作目录
    mkdir `pwd`/build
    # 不存在则创建 build 目录
fi

rm -rf `pwd`/build/*
# 删除当前目录下 build 目录里的所有内容 -rf 强制递归删除 不提示

cd `pwd`/build && 
# 切换到当前目录下的 build 目录 && 连接符 前面命令成功执行才会执行后面命令
    cmake .. && 
    # 在 build 目录下执行 cmake 命令 生成 Makefile .. 表示上级目录（项目根目录）
    make
    # 执行 make 命令 编译项目

# 回到项目根目录
cd ..
# 切换到上级目录 回到项目根目录

# 把头文件拷贝到 /usr/include/mymuduo so库拷贝到 /usr/lib
# 确保目标目录存在 已存在则跳过创建
mkdir -p /usr/include/my_muduo
# -p 选项确保目录存在 不存在则创建 存在则不报错

for header in `ls *.h`
# 遍历当前目录下所有 .h 结尾的文件 `ls *.h` 获取文件列表
do
    cp -f $header /usr/include/my_muduo
    # -f 强制覆盖已有头文件 不提示
done

cp -f `pwd`/lib/libmy_muduo.so /usr/lib
# -f 强制覆盖已有共享库文件 不提示

ldconfig
# 更新系统的共享库缓存 使新库生效